Aufrufhierarchie ermitteln
Beim Programmdebugging ist es manchmal sinnvoll, zu dokumentieren, welche Routine oder Methode von welchem Aufrufer gerufen wurde (SAPMV45A und die Userexits…). Die folgende Routine leistet das.
Wird bei dem CALL-Befehl unter DEPTH die Zahl -1 angegeben, so wird die Tabelle TAB mit der gesamten Aufrufhierarchie gefüllt.
Die folgende Routine können Sie in ein eigenes Programm setzen und dann aus jedem beliebigen anderen Programm heraus aufrufen.
Die Routine
FORM aktuelle_routine. TYPES: begin of abap_call_stack_entry, mainprogram like sy-repid, include like sy-repid, line type i, eventtype like abdbg-leventtype, event like abdbg-levent, flag_system type c, end of abap_call_stack_entry. DATA: acse type abap_call_stack_entry, tab type table of abap_call_stack_entry. CALL 'ABAP_CALLSTACK' ID 'DEPTH' FIELD 2 ID 'CALLSTACK' FIELD tab. LOOP AT tab INTO acse FROM 2. *-- Der Start ab dem zweiten Eintrag ist notwendig, weil in *-- der ersten Tabellenzeile der aktuelle Eintrag steht, also *-- diese FORM-Routine. WRITE: / 'Mainprog:', acse-mainprogram, / 'Include: ', acse-include, / 'Event: ', acse-eventtype, acse-event. ENDLOOP. ENDFORM.
Funktionsbaustein
Hilfreich ist auch der Funktionsbaustein SYSTEM_CALLSTACK, der ebenfalls Informationen über die Aufrufhierarchie liefert!
Klasse
Die Klasse CL_ABAP_GET_CALL_STACK liefert mit Hilfe der Methode GET_CALL_STACK ebenfalls die aktuelle Aufrufhierarchie.
Wahrscheinlich ist die aufbereitete Form des Aufrufstapels in der Regel nützlicher:
DATA(stack) = cl_abap_get_call_stack=>format_call_stack_with_struct( cl_abap_get_call_stack=>get_call_stack( ) ).
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024